package com.example.abe.diandi.nohttp;

import android.app.Activity;

import com.yanzhenjie.nohttp.NoHttp;
import com.yanzhenjie.nohttp.rest.Request;
import com.yanzhenjie.nohttp.rest.RequestQueue;

public class CallServer {

    private static CallServer instance;

    /**
     * 请求队列。
     */
    private RequestQueue requestQueue;

    private CallServer() {
        requestQueue = NoHttp.newRequestQueue(5);
    }

    /**
     * 请求队列。
     */
    public synchronized static CallServer getInstance() {
        if (instance == null)
            synchronized (CallServer.class) {
                if (instance == null)
                    instance = new CallServer();
            }
        return instance;
    }

    /**
     * 添加一个请求到请求队列。
     *
     * @param request   请求对象。
     * @param callback  结果回调对象。
     * @param isLoading  是否显示dialog。
     */
    public <T> void add(Activity activity, boolean isLoading, Request<T> request, HttpListener<T> callback) {
        requestQueue.add(-1, request, new HttpResponseListener(activity, request, callback, false, isLoading));
    }

    /**
     * 添加一个请求到请求队列。
     *
     * @param request   请求对象。
     * @param callback  结果回调对象。
     */
    public <T> void add(Activity activity, Request<T> request, HttpListener<T> callback) {
        requestQueue.add(-1, request, new HttpResponseListener(activity, request, callback, false, true));
    }

    /**
     * 取消这个sign标记的所有请求。
     * @param sign 请求的取消标志。
     */
    public void cancelBySign(Object sign) {
        requestQueue.cancelBySign(sign);
    }

    /**
     * 取消队列中所有请求。
     */
    public void cancelAll() {
        requestQueue.cancelAll();
    }
}